﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

/// <summary>
/// Summary description for TaoNgauNhien
/// </summary>
public class TaoNgauNhien
{
    public TaoNgauNhien()
    {
        //
        // TODO: Add constructor logic here
        //
    }


    /// <summary>
    /// Đưa 1 chuỗi vào và trộn random nó
    /// </summary>
    /// <param name="SoKyTuMuonLay"></param>
    /// <param name="ChuoiNguon"></param>
    /// <returns></returns>
    public string TaoChuoiNgauNhien(int SoKyTuMuonLay, string ChuoiNguon)
    {

        Random randNum = new Random();

        char[] chars = new char[SoKyTuMuonLay];

        int allowedCharCount = ChuoiNguon.Length;

        for (int i = 0; i < SoKyTuMuonLay; i++)
        {

            chars[i] = ChuoiNguon[(int)((ChuoiNguon.Length) * randNum.NextDouble())];

        }

        return new string(chars);

    }

    /// <summary>
    ///  Hàm này trả về chuỗi Password ngẫu nhiên [a-z], [0-9]
    /// </summary>
    /// <param name="PasswordLength"> độ dài password muốn lấy </param>
    /// <returns></returns>

    public static string TaoPasswordNgauNhien(int PasswordLength)
    {

        string _allowedChars = "abcdefghijkmnopqrstuvwxyz0123456789";

        Random randNum = new Random();

        char[] chars = new char[PasswordLength];

        int allowedCharCount = _allowedChars.Length;

        for (int i = 0; i < PasswordLength; i++)
        {

            chars[i] = _allowedChars[(int)((_allowedChars.Length) * randNum.NextDouble())];

        }

        return new string(chars);

    }

    
    /// <summary>
    /// Hàm sau đây sẽ tạo mã ngẫu nhiên chỉ gồm các chữ số
    /// </summary>
    /// <param name="codeCount">số kí tự muốn lấy </param>
    /// <returns></returns>
    public string TaoMaSoNgauNhien(int codeCount)
    {

        string allChar = "0,1,2,3,4,5,6,7,8,9";

        string[] allCharArray = allChar.Split(',');

        string randomCode = "";

        int temp = -1;

        Random rand = new Random();

        for (int i = 0; i < codeCount; i++)
        {

            if (temp != -1)
            {

                rand = new Random(i * temp * ((int)DateTime.Now.Ticks));

            }

            int t = rand.Next(10);

            if (temp != -1 && temp == t)
            {

                return TaoMaSoNgauNhien(codeCount);

            }

            temp = t;

            randomCode += allCharArray[t];

        }

        return randomCode;

    }

   
    /// <summary>
    ///  Hàm sau đây sẽ tạo chuỗi ngẩu nhiên có cả số và ký tự
    /// </summary>
    /// <param name="codeCount">Số kí tự cần lấy ra</param>
    /// <returns></returns>
    public string TaoMaSoVaChuNgauNhien(int codeCount)
    {

        string allChar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";

        string[] allCharArray = allChar.Split(',');

        string randomCode = "";

        int temp = -1;

        Random rand = new Random();

        for (int i = 0; i < codeCount; i++)
        {

            if (temp != -1)
            {

                rand = new Random(i * temp * ((int)DateTime.Now.Ticks));

            }

            int t = rand.Next(36);

            if (temp != -1 && temp == t)
            {

                return TaoMaSoVaChuNgauNhien(codeCount);

            }

            temp = t;

            randomCode += allCharArray[t];

        }

        return randomCode;

    }

}